package com.lucy.common.core;

import java.util.EnumSet;
import java.util.Objects;

/**
 * @author kindear
 * 公共枚举方法
 */
public interface CommonEnum {
    int getValue();

    String getKey();

    static <E extends Enum<E> & CommonEnum> E getEnum(Integer value, Class<E> clazz) {
        Objects.requireNonNull(value);
        EnumSet<E> all = EnumSet.allOf(clazz);
        return all.stream().filter(e -> e.getValue() == value).findFirst().orElse(null);
    }

    static <E extends Enum<E> & CommonEnum> E getEnum(String key, Class<E> clazz) {
        Objects.requireNonNull(key);
        EnumSet<E> all = EnumSet.allOf(clazz);
        return all.stream().filter(e -> e.getKey().equals(key)).findFirst().orElse(null);
    }
}
